package br.unifor.ads.desphouse.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * Objeto modelo para todos os lancamentos realizados no sistema
 * 
 * @author Alex Girao
 * 
 */
public class Lancamento implements Serializable {

	private static final long serialVersionUID = 471367301761615161L;

	private Long codigo;

	private String descricao;

	private Boolean entrada;
	
	private Date data;

	private LancamentoTipo lancamentoTipo;

	private Usuario usuario;
	
	private List<Parcelamento> parcelas;

	public Lancamento() {
	}

	public Lancamento(Long codigo) {
		this.codigo = codigo;
	}

	public Lancamento(Long codigo, String descricao, Boolean entrada, Date data,
			LancamentoTipo lancamentoTipo, Usuario usuario) {
		this.codigo = codigo;
		this.descricao = descricao;
		this.entrada = entrada;
		this.lancamentoTipo = lancamentoTipo;
		this.usuario = usuario;
	}
	
	public Lancamento(Long codigo, String descricao, Boolean entrada,
			Date data, LancamentoTipo lancamentoTipo, Usuario usuario,
			List<Parcelamento> parcelas) {
		super();
		this.codigo = codigo;
		this.descricao = descricao;
		this.entrada = entrada;
		this.data = data;
		this.lancamentoTipo = lancamentoTipo;
		this.usuario = usuario;
		this.parcelas = parcelas;
	}

	public Long getCodigo() {
		return codigo;
	}

	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Boolean getEntrada() {
		return entrada;
	}

	public void setEntrada(Boolean entrada) {
		this.entrada = entrada;
	}

	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	public LancamentoTipo getLancamentoTipo() {
		return lancamentoTipo;
	}

	public void setLancamentoTipo(LancamentoTipo lancamentoTipo) {
		this.lancamentoTipo = lancamentoTipo;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public List<Parcelamento> getParcelas() {
		return parcelas;
	}

	public void setParcelas(List<Parcelamento> parcelas) {
		this.parcelas = parcelas;
	}
	
	@Override
	public String toString() {
		return this.descricao;
	}

}
